package com.zyl.blog.common.utils.Extreme;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import java.util.List;

/**
 * @version v1.0
 * @ProjectName: Personal_Blog
 * @Package: com.zyl.common.utils.Extreme
 * @ClassName: PageConvertUtils
 * @Description: 分页转换工具类
 * @Author FinalFantasy
 * @Date 2025/3/9-14:04
 */
public class PageConvertUtils {

    /**
     * 分页数据转移（保留源分页参数，替换记录列表）
     * @param sourcePage 源分页对象（包含分页参数）
     * @param targetRecords 目标记录列表
     * @return 新分页对象，包含原分页参数和新记录
     */
    public static <T> Page<T> transfer(IPage<?> sourcePage, List<T> targetRecords) {
        Page<T> newPage = new Page<>();

        // 设置目标记录列表
        newPage.setRecords(targetRecords);

        // 复制核心分页参数
        newPage.setCurrent(sourcePage.getCurrent());
        newPage.setSize(sourcePage.getSize());
        newPage.setTotal(sourcePage.getTotal());
        newPage.setPages(sourcePage.getPages());

        // 复制其他分页配置（根据实际需要添加）
        newPage.setSearchCount(sourcePage.searchCount());
        newPage.setOptimizeCountSql(sourcePage.optimizeCountSql());
        newPage.setOptimizeJoinOfCountSql(sourcePage.optimizeJoinOfCountSql());
        newPage.setMaxLimit(sourcePage.maxLimit());
        newPage.setCountId(sourcePage.countId());
        return newPage;
    }
}